package com.expense.common.config;

import org.beetl.sql.core.mapper.BaseMapper;

import java.util.List;

/**
 * @author liuBin
 * @date 2018/9/21
 * 基于BaseMapper 的拓展 BaseDao ,完善一些常用Dao层操作
 */
public interface BaseDao<T> extends BaseMapper{

    /**
     * 保存一个对象，可以使新增，也可以是修改
     * 必须有一个public字段叫ID
     * @param t
     * @return
     */
    int saveOne(T t);

    /**
     * 批量更新,只能用于更新
     * 按照模板更新(字段为null的会被忽略)，不能新增
     */
    int[] updateBatch(List<T> list);

    /**
     * 批量删除，必须传list类型ids,ids不能为空，ids 为主键集合
     * 删除为逻辑删除，会根据ID字段，将deleted字段设为1
     */
    int[] deleteBatch(List ids);

    /**
     * 根据主键ID查找deleted 为0 的未被逻辑删除的对象
     * @param id
     * @return
     */
    T findByIdAndDeleted(Object id);

    /**
     * 批量保存，不区分新增还是修改，一股脑全放进来
     * @param list
     * @return
     */
    Boolean saveAll(List<T> list);
}
